# 1-导包
from config import session
from config import host
import logging


# 2-定义一个注册登录模块的接口封装类
class ApiRegisterLogin:

    # 2.1-定义类的初始化方法（定义接口请求的路径）
    def __init__(self):
        # 定义图片验证码接口请求路径
        self.img_code_url = host+"/common/public/verifycode1/{}"
        # 定义获取短信验证码接口路径
        self.phone_code_url = host+"/member/public/sendSms"
        # 定义注册接口请求路径
        self.register_url = host + "/member/public/reg"
        # 定义登录接口请求路径
        self.login_url = host + "/member/public/login"
        # 定义退出登录的请求路径
        self.logout_url = host + "/member/member/logout"
        # 定义是否登录接口请求路径
        self.login_status_url = host + "/member/public/islogin"

    # 2.2-获取图片验证接口封装（实现接口的封装，1个方法对应1个接口）
    def api_img_code(self, random=0.123):   # 定义初始化参数，给定初始值，后续调用就可以省略传参，方法会自动加上默认值
        # 记录接口请求的方法、路径、参数
        logging.info("获取图片验证码接口请求方法：{}，请求路径是：{}".format("get",self.img_code_url.format(random)))
        # 发送接口请求，返回响应结果，format函数的作用是将{}替换为random值
        return session.get(url=self.img_code_url.format(random))

    # 2.3-定义获取短信接口码接口封装方法
    def api_phone_code(self,phone,imgVerifyCode,type="type"):
        # 定义接口请求参数
        req_data = {"phone":phone, "imgVerifyCode":imgVerifyCode, "type":type}
        # 记录接口请求的方法、路径、参数
        logging.info("获取短信验证码接口请求方法：{}，请求路径是：{}，请求参数是：{}".format("post", self.phone_code_url,req_data))
        # 执行接口请求，获取响应结果(data表示请求类型是表单格式)
        return session.post(url=self.phone_code_url, data=req_data)

    # 2.4-定义注册接口封装方法
    def api_register(self,phone,password,verifycode,phone_code,dy_server="on",invite_phone=""):
        # 定义请求的参数
        req_data = {"phone":phone,"password":password,"verifycode":verifycode,"phone_code":phone_code,
                    "dy_server":dy_server,"invite_phone":invite_phone}
        # 记录接口请求的方法、路径、参数
        logging.info("注册接口请求方法：{}，请求路径是：{}，请求参数是：{}".format("post", self.register_url, req_data))
        # 执行接口请求，返回响应结果
        return session.post(url=self.register_url, data=req_data)

    # 2.5-定义登录接口封装方法
    def api_login(self,keywords,password):
        # 定义请求的参数
        req_data = {"keywords":keywords,"password":password}
        # 记录接口请求的方法、路径、参数
        logging.info("登录接口请求方法：{}，请求路径是：{}，请求参数是：{}".format("post", self.login_url, req_data))
        # 执行接口请求，返回响应结果
        return session.post(url=self.login_url, data=req_data)

    # 2.6-定义是否登录接口封装方法
    def api_login_status(self):
        # 记录接口请求的方法、路径、参数
        logging.info("是否登录接口请求方法：{}，请求路径是：{}".format("post", self.login_status_url))
        # 执行接口请求，返回响应结果
        return session.post(url=self.login_status_url)

    # 2.7-定义退出登录的方法
    def api_logout(self):
        # 记录日志
        logging.info("退出登录接口请求方法：{}，请求路径是：{}".format("get", self.logout_url))
        # 执行测试
        return session.get(url=self.logout_url)
